package net.controller;

import net.bo.KUtilisateur;
import net.ko.framework.KoSession;
import net.ko.validation.KValidator;

public class KValidateRegister extends KValidator {

	protected boolean existsEmail() {
		String mail = getValue("mail");
		KUtilisateur user = KoSession.kloadOne(KUtilisateur.class, "mail='" + mail + "'");
		return user.isLoaded();
	}

	protected boolean existsLogin() {
		String login = getValue("login");
		KUtilisateur user = KoSession.kloadOne(KUtilisateur.class, "login='" + login + "'");
		return user.isLoaded();
	}

	public void validatePassword() {
		// Variable en fonction de la stratégie de mots de passe
	}

	public void validateConfirmation() {
		String confirmation = getValue();
		String password = getValue("password");

		if (confirmation != null) {
			if (!confirmation.equals(password)) {
				setOnError(true);
			}
		} else {
			onValid(confirmation);
		}

	}

	public void validateEmail() {
		if (existsEmail()) {
			setOnError(true);
		}
	}

	public void validateLogin() {
		if (existsLogin()) {
			setOnError(true);
		}
	}

	@Override
	protected void onError(String fieldName) {

		if ("confirmation".equals(fieldName))
			displayError("Mots de passe non identiques");

		if ("mail".equals(fieldName))
			displayError("Cette adresse existe déjà");

		if ("login".equals(fieldName)) {
			displayError("Ce login existe déjà");
		}
	}

	@Override
	protected void onValid(String fieldName) {
		// TODO Auto-generated method stub

	}

}
